# 结合ReAct的手段，将DeppSeek打造成智能体
import json # 用于处理JSON格式的数据
from llm import client # 用于与LLM交互
from prompt import REACT_PROMPT # 用来获取ReAct的提示词
from tools import tools,get_ # 用于搜索工具


# 定义发送消息的函数
def send_message(message):
    ''''向LLM发送消息并获取响应
    :param message: 要发送的消息内容
    :return: LLM的响应内容'''
    response = client.chat.completions.create(
        model = "deepseek-chat",
        messages = message,
        temperature = 0.7, # 控制生成文本的随机性，0.7表示生成的文本更加随机
    )
    return response

#主函数入口
if __name__ == "__main__":
    instructions = "你是一个高考信息收集助手，可以回答高考省份划线相关的问题"
    #假设用户输入的消息
    query = "请告诉我,2025年江西省高考特控线是多少,同时回答哪个省份的物理类特控线最高？"

    # 使用模板构建完整的提示词
    prompt = REACT_PROMPT.format(instructions=instructions, tools=tools, tool_names="get_", input=query)

    # print(prompt) # 打印提示词，用于调试

    # 初始化消息列表，用于存储对话历史
    # messages = [{"role": "user", "content": prompt}] # 系统角色，用于设置助手的角色

    messages = [{"role": "user", "content": "请告诉我,2025年江西省高考特控线是多少,同时回答哪个省份的物理类特控线最高？"}]

    response = send_message(messages) # 调用send_message函数发送消息并获取响应

    response_text = response.choices[0].message.content # 从响应中提取文本内容

    print(response_text) # 打印响应内容，用于调试

# if __name__ == "__main__": # 主函数入口，当脚本直接运行时执行以下代码
#     while True: # 无限循环，用于持续接收用户输入
#         query = input("请输入你的问题：") # 接收用户输入的问题
#         messages = [{"role": "user", "content": query}] # 初始化消息列表，用于存储对话历史，将用户输入的问题作为第一条消息
#         response = send_message(messages) # 调用send_message函数发送消息并获取响应
#         response_text = response.choices[0].message.content # 从响应中提取文本内容
#         print("助手回答：")
#         print(response_text) # 打印响应内容，用于调试